: REPORT-ERROR CR ." ####" TYPE ."  NOT FOUND in block " BLK @ . ;
: LL  BLOCK 2026$ !  FFFF$ 205C$ !
		BEGIN
		   WORD DUP 		( addr len len )
		WHILE 				( addr len )
		   2DUP FIND ?DUP 	( addr len da ?da )
		   IF 				( addr len da )
		      NIP NIP 		( da )
			  DUP 2+ @ 8000$ AND ( da imm )
			  IF 			( da )
			    >CFA 		( xt )
				EXECUTE 	( -- )
			  ELSE ( da )
			    >CFA 		( xt )
				STATE @ 	( xt state )
				IF 			( xt )
					, 		( -- )
				ELSE 		( xt )
					EXECUTE ( -- )
				THEN
			  THEN
		   ELSE 			( addr len )
		      2DUP 			( addr len addr len )
		      NUMBER 		( addr len NUM UCC )
			  IF 			( addr len num )
				DROP REPORT-ERROR ( -- )
			  ELSE 			( addr len num )
			     NIP NIP 	( num )
				 STATE @ 	( num state )
				 IF 		( num )
					COMPILE LIT , ( -- )
				THEN
			  THEN
		   THEN
		REPEAT
		2DROP
		0 205C$ !
		0 219C$ !
;

--- old loading routine ---

VARIABLE VDPADDR
: REPORT-ERROR ( wa wlen ) CR ." Error:" TYPE 
     ."  not found in block " BLK @ U. CR ;
: LOAD ( block_no -- )
    BLOCK VDPADDR !
	16 0 DO
		64 TIB C! TIB 1+ 2054$ !
		VDPADDR @ I 64 * +
		TIB 1+ 64 VMBR
		BEGIN
		   WORD DUP				( ad len len )
		WHILE					( ad len )
		   2DUP FIND ?DUP		( ad len ad len da da )
		   IF					( ad len ad len da )
		      NIP NIP			( ad len da )
			  DUP 2+ @ 8000$ AND ( ad len imm )
			  IF 
			    >CFA EXECUTE
			  ELSE 
			    >CFA STATE @ IF , ELSE EXECUTE THEN
			  THEN
		   ELSE					( ad len ad len )
		      2DUP NUMBER		( ad len ad num ucc )
			  IF				( ad len ad num )
				DROP REPORT-ERROR ( ad len ad )
			  ELSE				( ad len ad num )
			     NIP NIP		( ad num )
				 STATE @ IF COMPILE LIT , THEN
			  THEN
		   THEN
		REPEAT
	    DROP
	LOOP
;
USE DSK2.BLOCKS

Change WORD. Write a new word, (VWORD) that moves through VDP ram instead of the TIB.
When it finds a word, it will place it at the start of TIB, set TIB length byte, and
load the stack as per WORD.

: SS .S CR KEY DROP ;

: LIST BLOCK 16 0 DO CR I DUP 10 < IF SPACE THEN N>S TYPE 58 EMIT DUP HERE @ 64
VMBR HERE @ 64 -TRAILING TYPE 64 + BREAK? LOOP DROP CR ;
USE DSK2.BLOCKS
1 LIST















: TEMP2 2026$ ! ;
: LOADNG 205E$ ! ;
: REPORT-ERROR ." ERROR WHILE LOADING" ;
: LOAD  BLOCK TEMP2  FFFF$ LOADNG
		BEGIN
		   WORD DUP				
		WHILE					
		   2DUP FIND ?DUP		
		   IF					
		      NIP NIP			
			  DUP 2+ @ 8000$ AND 
			  IF 
			    >CFA EXECUTE
			  ELSE 
			    >CFA STATE @ IF , ELSE EXECUTE THEN
			  THEN
		   ELSE					
		      2DUP NUMBER		
			  IF				
				DROP REPORT-ERROR 
			  ELSE				
			     NIP NIP		
				 STATE @ IF COMPILE LIT , THEN DROP
			  THEN
		   THEN
		REPEAT
		0 LOADNG
;
